package cn.itsource.regex;

/**
 *	正则表达式：是跨语言平台。JS、Java。。。。
 *		1. 概念：
 *				就是一个字符串匹配机制。
 *
 *		2. 语法：
 *				?,*,+,\d,\w 都是等价字符
				?等价于匹配长度{0,1}
				*等价于匹配长度{0,}
				+等价于匹配长度{1,}	
				\d等价于[0-9]	匹配一个任意数字
				\D等价于[^0-9]	匹配一个任意非数字字符
				\w等价于[A-Za-z_0-9]
				\W等价于[^A-Za-z_0-9]。
				常用运算符与表达式:
				^ 开始
				() 域段
				[] 包含,默认是一个字符长度
				[^] 不包含,默认是一个字符长度
				{n,m} 匹配长度在n到m之间
				{n,} 匹配长度大于等于n
				. 任何单个字符(\. 字符点)
				| 或
				\ 转义
				$ 结尾
				[A-Z] 26个大写字母
				[a-z] 26个小写字母
				[0-9] 0至9数字
				[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
				
				^[0-9]+(.[0-9]{1,2})?$ :表示匹配 0-9的数字1个到任一个 和（ . 和 0-9 一个或者两个）括号中可以有0或者1个
 *
 *		3. 作用：
 *			校验做一些要求判断，例如：账号规范、密码规范、身份证、电话号码等
 *
 *		4. 使用：	
 *			Java中String的几个方法用：
 *			boolean matches(String regex)
 *			String[] split(String regex)
 *			void replaceAll(String regex,String str)
 *			void replaceFirst(String regex,String str)
 *
 *			JS:也能用
 *
		5. 以后用到正则表达式的时候，能百度就百度
		
		6. 参见Matcher 和 Pattern类，加强正则表达式
 *	
 */
public class RegexTest {

	public static void main(String[] args) {
		/*
		 * 注意：
		 * 	第1个^表示正则表达式开始
		 * 	第2个^表示正则表达式中的非（除了）的意思
		 *  最后一个$:表示正则表达式结束
		 */
		String regex = "^[^0-9]$";//表示匹配0~9之间任意一个字符
		String str = "123";
		boolean matches = str.matches(regex);//判断当前str对象是不是满足regex规则
		System.out.println(matches);
		
		
		regex = "[abcd]*";////表示匹配abcd之间任意0个到多个字符
		str = "ab";
		boolean matches3 = str.matches(regex);
		System.out.println(matches3);
		
		//请验证手机号：1（第二位没有：0，1，2） 共11位
		regex = "^[1][3-9][0-9]{9}$";
		str = "13380806969";
		boolean matches2 = str.matches(regex);
		System.out.println(matches2);
	}

}
